Disco Diffusion#

This is an simple way of creating compelling Disco Diffusion artworks for generative artists.

References:#

Note

Install ekorpkit package first.

Set logging level to Warning, if you don’t want to see verbose logging.

If you run this notebook in Colab, set Hardware accelerator to GPU.

!pip install ekorpkit[disco] exit()

from ekorpkit import eKonf

eKonf.setLogger("WARNING")
eKonf.set_cuda(device=0)
print("version:", eKonf.__version__)

is_notebook = eKonf.is_notebook()
is_colab = eKonf.is_colab()
print("is notebook?", is_notebook)
print("is colab?", is_colab)
if is_colab:
    eKonf.mount_google_drive(workspace="MyDrive/colab_workspace", project="disco-imagen")

eKonf.env_set('KMP_DUPLICATE_LIB_OK', 'TRUE')

print("evironment varialbles:")
eKonf.print(eKonf.env().dict())
INFO:ekorpkit.base:Setting cuda device to ['A100-SXM4-40GB']
INFO:ekorpkit.base:IPython version: (6, 9, 0), client: jupyter_client
INFO:ekorpkit.base:Google Colab not detected.
version: 0.1.34+12.gf0c7d94.dirty
is notebook? True
is colab? False
evironment varialbles:
{'CUDA_DEVICE_ORDER': 'PCI_BUS_ID',
 'CUDA_VISIBLE_DEVICES': '0',
 'EKORPKIT_CONFIG_DIR': '/workspace/projects/ekorpkit-book/config',
 'EKORPKIT_DATA_DIR': None,
 'EKORPKIT_LOG_LEVEL': 'WARNING',
 'EKORPKIT_PROJECT': 'ekorpkit-book',
 'EKORPKIT_WORKSPACE_ROOT': '/workspace',
 'KMP_DUPLICATE_LIB_OK': 'TRUE',
 'NUM_WORKERS': 230}
cfg = eKonf.compose("model/disco")
disco = eKonf.instantiate(cfg)
INFO:ekorpkit.base:IPython version: (6, 9, 0), client: jupyter_client
INFO:ekorpkit.base:IPython version: (6, 9, 0), client: jupyter_client
INFO:ekorpkit.base:Google Colab not detected.
Setting up [LPIPS] perceptual loss: trunk [vgg], v[0.1], spatial [off]
Loading model from: /opt/conda/lib/python3.8/site-packages/lpips/weights/v0.1/vgg.pth
eKonf.print(cfg.diffuse)
{'angle': '0:(0)',
 'animation_mode': 'None',
 'batch_name': 'TimeToDisco',
 'batch_num': None,
 'batch_size': 1,
 'calc_frames_skip_steps': None,
 'clamp_grad': True,
 'clamp_max': 0.05,
 'clip_denoised': False,
 'clip_guidance_scale': 5000,
 'cut_ic_pow': 1,
 'cut_icgray_p': '[0.2]*400+[0]*600',
 'cut_innercut': '[4]*400+[12]*600',
 'cut_overview': '[12]*400+[4]*600',
 'cutn_batches': 4,
 'display_rate': 20,
 'eta': 0.8,
 'extract_nth_frame': 2,
 'far_plane': 10000,
 'force_flow_generation': False,
 'fov': 40,
 'frames_scale': 1500,
 'frames_skip_steps': '60%',
 'fuzzy_prompt': False,
 'image_prompts': None,
 'init_image': 'None',
 'init_scale': 1000,
 'intermediate_saves': 250,
 'intermediates_in_subfolder': True,
 'interp_spline': 'Linear',
 'key_frames': True,
 'max_frames': 10000,
 'midas_depth_model': 'dpt_large',
 'midas_weight': 0.3,
 'n_samples': 6,
 'near_plane': 200,
 'padding_mode': 'border',
 'perlin_init': False,
 'perlin_mode': 'mixed',
 'persistent_frame_output_in_batch_folder': True,
 'rand_mag': 0.05,
 'randomize_class': True,
 'range_scale': 150,
 'resume_from_frame': 'latest',
 'resume_run': False,
 'retain_overwritten_frames': False,
 'rotation_3d_x': '0: (0)',
 'rotation_3d_y': '0: (0)',
 'rotation_3d_z': '0: (0)',
 'run_to_resume': 'latest',
 'sampling_mode': 'bicubic',
 'sat_scale': 0,
 'seed': None,
 'set_seed': 'random_seed',
 'side_x': None,
 'side_y': None,
 'skip_augs': False,
 'skip_steps': 10,
 'start_frame': None,
 'steps': 250,
 'steps_per_checkpoint': 2,
 'stop_on_next_loop': False,
 'text_prompts': {0: ['At a special meeting, hawkish central bankers are '
                      'poised to raise the target rates, Trending on '
                      'artstation.'],
                  100: ['This set of prompts start at frame 100',
                        'This prompt has weight five:5']},
 'transformation_percent': [0.09],
 'translation_x': '0: (0)',
 'translation_y': '0: (0)',
 'translation_z': '0: (10.0)',
 'turbo_mode': False,
 'turbo_preroll': 10,
 'turbo_steps': '3',
 'tv_scale': 0,
 'use_horizontal_symmetry': False,
 'use_vertical_symmetry': False,
 'video_init_blend_mode': 'optical flow',
 'video_init_check_consistency': False,
 'video_init_clip_guidance_scale': 1000,
 'video_init_cutn_batches': 4,
 'video_init_file': 'init.mp4',
 'video_init_flow_blend': 0.999,
 'video_init_flow_warp': True,
 'video_init_frames_scale': 15000,
 'video_init_frames_skip_steps': '70%',
 'video_init_path': '/workspace/projects/ekorpkit-book/disco-imagen/init_images/init.mp4',
 'video_init_range_scale': 150,
 'video_init_sat_scale': 300,
 'video_init_seed_continuity': False,
 'video_init_skip_steps': 50,
 'video_init_steps': 100,
 'video_init_tv_scale': 0.1,
 'vr_eye_angle': 0.5,
 'vr_ipd': 5.0,
 'vr_mode': False,
 'width_height': [1280, 768],
 'zoom': '0: (1), 10: (1.05)'}
text_prompts = "Members of the Federal Reserve Board are convened to cut the target interest rates, surrounding by doves, in a large tower."
text_prompts = 'At a special meeting, hawkish central bankers are poised to raise the target rates, Trending on artstation.'
disco.diffuse(text_prompts, batch_name='hawkish', n_samples=4)

INFO:ekorpkit.models.disco.base:Seed used: 3369791795
../../../../_images/5b7e0b638203cc11c875645d96e79bbaca8bd5965fd280264636b0e50d7c22a3.png
disco.make_gif(batch_name='hawkish', batch_num=6, sample_num=3, show=False)
disco.collage(batch_name='hawkish', batch_num=7, ncols=2, num_images=4)
../../../../_images/b5f1864f789e46efafe6824eb20e03031db0d1a6c0ba1411743fb39130256376.png